#include <QString>
#include <QList>
#include "artist.h"
#include "venue.h"
#include "performancedate.h"
#include "ticket.h"
#include "tax.h"

#ifndef PROTOOLSSTANDARD_H
#define PROTOOLSSTANDARD_H

class ProtoolsStandard
{
public:
    ProtoolsStandard();

    ~ProtoolsStandard();

    QString tr(const QString &string);

    void WriteFile(const QString &fileName);

    bool ExportToPDF(const QString &fileName);

    bool ExportToText(const QString &fileName);

    bool ExportToHTML(const QString &fileName);

    bool OpenFile(const QString &fileName);

    QStringList GenerateHTML();

    QStringList GeneratePlainText();

    void RecalculateProtoolsObject();

    void AddArtist(const QString &artistName);

    void RemoveArtist(int intArtist);

    void AddVenue(const QString &venueName, const QString &venueAddress1, const QString venueAddress2, const QString venueAddress3, const QString venueCity, const QString venueState, const QString venuePostalCode, const QString venueSpecialNotes);

    void RemoveVenue(int intVenue);

    void AddPerformanceDate(const QDateTime &startDate, const QDateTime &endDate);

    void RemovePerformanceDate(int intDateTime);

    void AddTicket(const QString &tierName, double cost, const QString &tierDescription, int numberAvailable);

    void RemoveTicket(int intTicket);

    void AddTax(const QString &taxName, const double &taxRate);

    void RemoveTax(int intTax);

    QString GetTicketText(int currentRow);

    QString GetArtistText(int currentRow);

    QString GetVenueText(int currentRow);

    QString GetTaxText(int currentRow);

    QString GetPerformanceDateText(int currentRow);

    enum ShowSize
    {
        SMALL_CONCERT = 0,
        LARGE_CONCERT = 1,
        SMALL_FESTIVAL = 2,
        LARGE_FESTIVAL = 3
    };

    int ProductionSize;

    QList<Artist *> *Artists;

    QList<Venue *> *Venues;

    QList<PerformanceDate *> *PerformanceDates;

    QList<Tax *> *Taxes;

    QList<Ticket *> *TicketTiers;

    //Main screen
    QString Main_lblSize;

    QString Main_lblVenues;

    QString Main_lblArtists;

    QString Main_lblPerformaceDates;

    QString Main_lblProdCost;

    QString Main_lblStaffCost;

    QString Main_lblAdminCosts;

    QString Main_lblMktgCosts;

    QString Main_lblSecCosts;

    QString Main_lblOpsCost;

    QString Main_lblSubTotal;

    QString Main_TicketCount;

    QString Main_lblTicketSalesPos;

    QString Main_lblPossibleDollars;

    QString Main_lblPossibleTicletCOmm;

    QString Main_lblTax;

    QString Main_lblNet;

    // Administrative costs screen
    double AdminScreen_AdminStaff;

    double AdminScreen_BoxOffStaff;

    double AdminScreen_TicketTakers;

    double AdminScreen_TrafficControl;

    double AdminScreen_OfficeCosts;

    double AdminScreen_OfficeEquipment;

    double AdminScreen_Postage;

    double AdminScreen_Phones;

    double AdminScreen_LegalAccountant;

    double AdminScreen_RentPower;

    double AdminScreen_Insurance;

    double AdminScreen_Permits;

    double AdminScreen_ASCAP;

    double AdminScreen_Ticketprinting;

    // From the marketing screen
    double MarketingScreen_PublicRelations;

    double MarketingScreen_CreativePrinting;

    double MarketingScreen_MktgStaff;

    // From the operations screen
    double OperationsScreen_SiteOpsCoordinator;

    double OperationsScreen_Laborers;

    double OperationsScreen_VenueCost;

    double OperationsScreen_LandRestore;

    double OperationsScreen_Kamode;

    double OperationsScreen_WaterTrucks;

    double OperationsScreen_EquipmentRent;

    double OperationsScreen_Petroleum;

    double OperationsScreen_PowerGenerator;

    double OperationsScreen_PerimeterLights;

    double OperationsScreen_Fence;

    double OperationsScreen_OpsVehicles;

    double OperationsScreen_ShuttleBuses;

    double OperationsScreen_MotorHomes;

    double OperationsScreen_LandPrep;

    // from the production screen
    double ProductionScreen_Talent;

    double ProductionScreen_Sound;

    double ProductionScreen_Lights;

    double ProductionScreen_Catering;

    double ProductionScreen_Stage;

    double ProductionScreen_LightTowers;

    double ProductionScreen_Aerials;

    // from the security screen
    double SecurityScreen_SecStaff;

    double SecurityScreen_Vehicles;

    double SecurityScreen_FirstAid;

    double SecurityScreen_Communications;

    double SecurityScreen_Ids;

    // from the staff screen
    double StaffScreen_ProdStaff;

    double StaffScreen_StageHands;

    double TicketComm;

    // This is for the database
    int ProductionID;

    QString ProductionName;
};

#endif // PROTOOLSSTANDARD_H
